In recent years, report processing technologies have permeated business information systems to the point where the reliability, scalability, and flexibility of report processing directly impacts the operational efficiency of an organization's business processes. As a result, users expect a report processing system to satisfy each user request within a short and predictable time to handle a large number of simultaneous user requests, and to provide a rich feature set. Because many business intelligence (BI) software applications ultimately fail in production due to a lack of scalability or flexibility, BI software vendors have focused their efforts toward developing feature-rich report processing software that continues to function while supporting a large number of simultaneous users. However, little progress has been made on report processing software solutions designed to ensure the sustained, long-term reliability of report processing servers in these systems.
Business Intelligence (BI) generally refers to software tools used to improve enterprise decision-making, where an enterprise is a business, government body, non-profit organization, and the like. These tools are commonly applied to financial, human resource, marketing, sales, customer and supplier analyses. More specifically, these tools can include: reporting and analysis tools to present information; content delivery infrastructure systems for delivery and management of reports and analytics; data warehousing systems for cleansing and consolidating information from disparate sources; and data management systems, such as relational databases or On Line Analytic Processing (OLAP) systems used to collect, store, and manage raw data.
A subset of business intelligence tools are report generation tools. There are a number of commercially available products to produce reports from stored data. For instance, Business Objects Americas of San Jose, Calif., sells a number of widely used report generation products, including Crystal Reports™, Business Objects OLAP Intelligence™, and Business Objects Web Intelligence™, and Business Objects Enterprise™. As used herein, the term report refers to information automatically retrieved (i.e., in response to computer executable instructions) from a data source (e.g., a database, a data warehouse, and the like), where the information is structured in accordance with a report schema that specifies the form in which the information should be presented. A non-report is an electronic document that is constructed without the automatic retrieval (i.e., in response to computer executable instructions) of information from a data source. Examples of non-report electronic documents include typical business application documents, such as a word processor document, a spreadsheet document, a presentation document, and the like.
FIG. 1 illustrates the typical response of a prior art report processing server to an error condition encountered while processing a request. A server 101 is a computer capable of supporting many users (clients), each of whom, for example, could request to view one of many different reports. When a client request 100 is received by the server 101, the request 100 can be queued as a task 104A by a request router 102. Request router 102 and tasks 104A-1004N are all part of process 103. If a client request 100 is to a corrupt report, that is a report that will generate one or more error conditions, the resources of the server 101 can be fully engaged in attempting to service the request 100. Error conditions include infinite loops, pseudo-infinite loops, improper memory access, and improper communication requests that cannot be resolved. An error condition, say at task 104A, effectively renders the server 101 unavailable for servicing subsequent tasks 104B-104N until the request 100 is terminated and the computing resources of the server 101 are freed. In other words, process 103 is locked up until it is freed of task 104A. This scenario illustrates that failure can ensue—regardless of the number of clients—when a single client request somehow results in an error condition that hinders the processing capability of the system. For report processing servers, diminishment of processing capabilities has a wide effect because report processing is intensive with respect to communication, database, and processing resources.
To address this shortcoming, BI software vendors generally use simple mechanisms to terminate user requests that cannot be satisfied within a given time period. However, this solution is not robust because the report processing server is not capable of supporting any other user requests until the corrupt request is removed, resulting in a potentially large number of denied or substantially delayed requests. More sophisticated, hardware-intensive solutions generally rely on running more than one processing application on a server that supports this, such as a server containing multiple processors. In this scenario, only those processing applications running on the same processor as the corrupt request is hindered, and processing applications running on other processors continue to service user requests. This type of solution, though improving the reliability of a report processing system, is resource intensive and may not be feasible for users without the necessary advanced hardware. Further, this solution is not completely satisfactory as a server may elect to dedicate substantial resources (e.g., processor time) to servicing a corrupt request. These resources would not be available to other requests, hindering the performance of any server including multiprocessor servers. Accordingly, it would be desirable to provide a report processing software solution for mission-critical enterprise deployments designed to ensure the sustained, long-term reliability of report processing servers using a single processor.